2024.6.25 定積分【scipy】
scipy.integrateを利用すると定積分の値を求めることができる。
quadは一般的な定積分を求める関数である。(公式)
integrate.quad(関数名, 積分区間の下限, 積分区間の上限)
簡単な例
code:integrate1.py
import numpy as np
from scipy import integrate
# Linear function
def func1(x):
return x
# sin function
def func2(x):
return np.sin(x)
print(integrate.quad(func1, 0, 1))
print(integrate.quad(func2, 0, np.pi))
結果
code:result1.txt
(0.5, 5.551115123125783e-15)
(2.0, 2.220446049250313e-14)
func1は原点を通る傾き$ 1の直線、これを$ (0, 1)で定積分
func2は正弦波、これを区間$ (0, 2\pi)で定積分
結果は定積分の値と推定誤差のタプルが返される。
積分区間が$ \inftyを含む場合
積分区間の指定にnp.infを利用することができる。
code:integrate2.py
import numpy as np
from scipy import integrate
def func3(t):
return np.e**(-t)
print(integrate.quad(func3, 0, np.inf))
print(integrate.quad(func3, np.inf, 0))
結果
code:result2.txt
(1.0000000000000002, 5.842606672514919e-11)
(-1.0000000000000002, 5.842606672514919e-11)
引数を与える
argsオプションを用いて引数を渡すことができる。
code:integrate3.py
import numpy as np
from scipy import integrate
def func4(x, a, b):
return a * x +b
def func5(x, a, b, c):
return a * x**2 + b * x + c
print(integrate.quad(func4, 0, 1, args=(1, 2)))
arg5 = (1, 2, 3) # タプルで与える
sol5, abserr5 = integrate.quad(func5, 0, 1, args=arg5)
print('解', sol5)
print('推定絶対誤差', abserr5)
結果
code:result3.txt
(2.5, 2.7755575615628914e-14)
解 4.333333333333333
推定絶対誤差 4.810966440042345e-14